/**
 * Arduino两轮小车
 * 
 * 本程序可不受限制的用于学习和教学，商业用途请联系作者。
 * 本程序不对用户因使用程序而造成任何形式的损失负责。
 * 
 * site: http://www.xpstem.com/maker/arduino-vehicle
 * author: billy zhang
 */
 
#ifndef ARDUINO_SOFTSERIAL_WRAPPER_H_
#define ARDUINO_SOFTSERIAL_WRAPPER_H_

#include <Arduino.h>
#include <SoftwareSerial.h>

#include "SerialWrapper.h"

/**
 * 软串口封装类
 */
class SoftSerialWrapper : public SerialWrapper
{
  public:
    SoftSerialWrapper(uint8_t rxPin, uint8_t txPin, int baud);
    ~SoftSerialWrapper();

    uint8_t available() override;
    byte read() override;
    void write(byte data) override;
    void println() override;

  private:
    const SoftwareSerial& serial_;
  
};

#endif
